import { defineConfig, loadEnv } from "vite";
import path, { resolve } from "path";
// import { resolve } from "path";
import vue from '@vitejs/plugin-vue'

// 按需引入组件及样式
import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';
import { VantResolver } from '@vant/auto-import-resolver';


import postCssPxToRem from 'postcss-pxtorem';

// const themePath = normalizePath(path.normalize("./src/style/global-theme.scss"));

// https://vitejs.dev/config/
export default defineConfig({
  // 生产环境服务的公共基础路径-用于生出环境的代理的路径
  // base: env.VITE_PUBLIC_PATH,
  server: {
    // host: "0.0.0.0",
    port: 9090,
    open: true,
    // 为开发服务器配置自定义代理规则-用于开发时的代理
    proxy: {
      "/dev-api": {
        // target: env.VITE_APP_BASE_URL,
        target: "https://p6albumserver.joykee.com",
        // target: "http://192.168.21.224:8080",
        changeOrigin: true,
        rewrite: path => path.replace(/^\/dev-api/, "")
      }
    },
  },

  plugins: [
    vue(),
    AutoImport({
      resolvers: [VantResolver()],
    }),
    Components({
      resolvers: [VantResolver()],
    }),
  ],

  // 插件：路径build/vite-plugin
  // plugins: createVitePlugins(env),
  resolve: {
    // 配置别名-绝对路径
    alias: {
      "@assets": path.join(__dirname, "src/assets"),
      "@": resolve(__dirname, "./src")
    }
  },
  css: {
    postcss: {
      plugins: [
        // 自动转rem的
        postCssPxToRem({
          rootValue(obj: any) {
            // 如果是 Vant 的样式文件，使用 37.5 作为基准值（Vant 设计稿基于 375px 宽度）
            if (obj.file.includes('vant')) {
              return 39;
            }
            // 其他文件使用 75 作为基准值（设计稿宽度为 750px）
            return 39;
          },
          propList: ['*'], // 转换所有属性
          selectorBlackList: ['.norem'], // 排除不转换的类名（如 .norem-px）
          exclude: /node_modules/i, // 排除 node_modules 目录（Vant 需单独处理）
          // exclude: file: String => { return !/vant/.test(file) }, // 仅处理 Vant
        }),
      ],
    },
    preprocessorOptions: {
      scss: {
        // additionalData的内容会在每个scss文件的开头自动注入
        // additionalData: `@use "@/style/var/index.scss" as *; `
      }
    }
  },
  // 依赖预加载 https://cn.vitejs.dev/config/dep-optimization-options.html#dep-optimization-options
  optimizeDeps: {
    // include
  },
  build: {
    outDir: "dist", // 指定打包路径，默认为项目根目录下的dist目录
    // minify: "esbuild", // esbuild打包更快但是不能去除console.log，terser打包慢但能去除console.log
    minify: "terser", // Vite 2.6.x 以上需要配置 minify："terser"，terserOptions才能生效，terser可以去除 console.log
    terserOptions: {
      compress: {
        keep_infinity: true, // 防止 Infinity 被压缩成 1/0，这可能会导致 Chrome 上的性能问题
        drop_console: true, // 生产环境去除 console
        drop_debugger: true // 生产环境去除 debugger
      },
      format: {
        comments: false // 删除注释
      }
    },
    assetsInlineLimit: 50 * 1024, // 打包内联阈值100kb
    chunkSizeWarningLimit: 50000, // 规定触发警告的 chunk 大小, 这里设置阈值为50kb, 消除打包大小超过500kb警告
    // 静态资源打包到dist下的不同目录,将文件类型css、js、jpg等文件分开存储
    rollupOptions: {
      output: {
        chunkFileNames: "static/js/[name]-[hash].js",
        entryFileNames: "static/js/[name]-[hash].js",
        assetFileNames: "static/[ext]/[name]-[hash].[ext]"
      }
    }
  }
})
